'use strict';

var fs = require('fs');
var path = require('path');
var assert = require('assert');
var childProcess = require('child_process');

describe('Testing CLI', function() {

  it('should work for simple SVG', function(done) {
    var command = 'node' +
     ' ' + path.join(__dirname, '..', 'bin', 'svgicons2svgfont.js') +
     ' -o ' + path.join(__dirname, 'results', 'originalicons-cli.svg') +
     ' -s 0xE001' +
     ' ' + path.join(__dirname, 'fixtures', 'originalicons', '*.svg');

    (childProcess.exec)(
      command,
      function(err) {
        if(err) {
          throw err;
        }
        assert.equal(
          fs.readFileSync(
            path.join(__dirname, 'results', 'originalicons-cli.svg'),
            { encoding: 'utf8' }
          ),
          fs.readFileSync(
            path.join(__dirname, 'expected', 'originalicons-cli.svg'),
            { encoding: 'utf8' }
          )
        );
        done();
      }
    );
  });

  it('should work for more than 32 SVG icons', function(done) {
    var command = 'node' +
     ' ' + path.join(__dirname, '..', 'bin', 'svgicons2svgfont.js') +
     ' -o ' + path.join(__dirname, 'results', 'lotoficons-cli.svg') +
     ' -s 0xE001' +
     ' ' + path.join(__dirname, 'fixtures', 'cleanicons', '*.svg') +
     ' ' + path.join(__dirname, 'fixtures', 'hiddenpathesicons', '*.svg') +
     ' ' + path.join(__dirname, 'fixtures', 'multipathicons', 'kikoolol.svg') +
     ' ' + path.join(__dirname, 'fixtures', 'originalicons', '*.svg') +
     ' ' + path.join(__dirname, 'fixtures', 'realicons', '*.svg') +
     ' ' + path.join(__dirname, 'fixtures', 'roundedcorners', '*.svg') +
     ' ' + path.join(__dirname, 'fixtures', 'shapeicons', '*.svg') +
     ' ' + path.join(__dirname, 'fixtures', 'tocentericons', '*.svg');

    (childProcess.exec)(
      command,
      function(err) {
        if(err) {
          throw err;
        }
        assert.equal(
          fs.readFileSync(
            path.join(__dirname, 'results', 'lotoficons-cli.svg'),
            { encoding: 'utf8' }
          ),
          fs.readFileSync(
            path.join(__dirname, 'expected', 'lotoficons-cli.svg'),
            { encoding: 'utf8' }
          )
        );
        done();
      }
    );
  });

  describe('with nested icons', function() {

    it('should work', function(done) {
      var command = 'node' +
        ' ' + path.join(__dirname, '..', 'bin', 'svgicons2svgfont.js') +
        ' -o ' + path.join(__dirname, 'results', 'nestedicons-cli.svg') +
        ' ' + path.join(__dirname, 'fixtures', 'nestedicons', '*.svg');

      (childProcess.exec)(
        command,
        function(err) {
          if(err) {
            throw err;
          }
          assert.equal(
            fs.readFileSync(
              path.join(__dirname, 'results', 'nestedicons-cli.svg'),
              { encoding: 'utf8' }
            ),
            fs.readFileSync(
              path.join(__dirname, 'expected', 'nestedicons-cli.svg'),
              { encoding: 'utf8' }
            )
          );
          done();
        }
      );
    });

  });

});
